home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / new_file / extras / apple_st / apple.les < prev    next >
Text File  |  1988-03-25  |  7KB  |  137 lines

  1. Übertragung von Apple II - Textdateien zum Atari über V24-Schnittstelle:
  2.  
  3. Apple und Atari müssen über die serielle Schnittstelle verbunden sein!
  4.  
  5. Auf dem Apple mu₧ ein Treiber-Programm gestartet werden, da₧ z.B. so
  6. aussehen könnte (unter APPLESOFT-BASIC):
  7.  
  8. Nr. Zeileninhalt                    Kommentar                   
  9.  
  10. 10  ONERR GOTO 500                  Fehlerbehandlung, s.u.
  11. 20  D$=CHR$(4)                      Steuerzeichen für DOS-Operationen
  12. 30  HOME
  13. 40  PRINT "TEXT-DATEIEN ZUM ATARI
  14.     UEBERTRAGEN:"
  15. 50  PRINT "('C1'=CATALOG,D1 ;       Ansteuern beider Laufwerke, und 
  16.     'C2'=CATALOG,D2)"               Möglichkeit zum Wechseln
  17. 60  PRINT
  18. 70  INPUT "NAME = ?";F$             Filenamen eingeben (Typ "T" !)
  19. 80  IF LEN(F$) < 1 THEN 490         Abbruch, wenn nur <CR> gedrückt
  20. 90  IF F$ <> "C1" AND F$ <> "C2"    kein "Catalog", kein Leerstring,
  21.     THEN 130                        also Start
  22. 100 PRINT D$;"CATALOG" +            Disk-Inhaltsverzeichnis zeigen
  23.     RIGHT$(F$,2)  
  24. 110 PRINT
  25. 120 GOTO 40                         Neuer Eingabe-Versuch
  26. 130 PRINT D$;"APPEND ";F$           Dient zum Test, ob File existiert;
  27. 140 PRINT D$;"CLOSE ";F$            "open" würde ihn sonst kreieren.
  28. 150 PRINT D$;"OPEN ";F$             Falls File existiert: Start
  29. 160 PRINT D$;"READ ";F$
  30. 170 E%=1                            Immer Variablen statt Zahlen !
  31. 180 S%=8191                         Die Bytes werden ab HGR1 abgelegt;
  32. 190 N%=0                            max. bis $9600 (vor DOS),= 31kByte
  33. 200 N%=N%+E%                        Schleife mit Zählererhöhung
  34. 210 GET B$                          Byte einlesen
  35. 220 POKE S%+N%, ASC(B$)             zwischenspeichern
  36. 225 A=FRE(0)                        **** s.u. ****
  37. 230 GOTO 200                        weiterlesen; Stop über Error-Routine
  38. 240 PRINT D$;"CLOSE"                Einlesen fertig
  39. 250 A=INT( N% / 256 )               High-Byte der Byteanzahl (8 Bit!)
  40. 260 B=N% - 256*A                    Low-Byte
  41. 270 PRINT N%;" BYTES WERDEN         Länge bekanntgeben
  42.     UEBERTRAGEN"
  43. 280 PRINT
  44. 290 PRINT "UEBERTRAGUNG ABBRECHEN   Text für Kontrolle (s. Prozedur)
  45.     (J/N) "                         sowie s.Zeilen 320-350
  46. 300 PRINT D$;"PR#2"                 Slot der seriellen Schnittstelle
  47. 310 PRINT CHR$(A), CHR$(B)          Länge im 2-Byte-Format übertragen
  48. 320 L=PEEK(-16384)                  Speicherzelle der Tastatureingabe
  49. 330 IF L>127 THEN 360               Taste wurde gedrückt
  50. 340 T=PEEK(-16336)                  falls nicht: Akustisches Signal geben
  51. 350 GOTO 320                        und weiter auf Antwort warten
  52. 360 POKE -16368,0                   Tastatureingabe wieder freigeben
  53. 370 IF L=202 THEN 420               "J" wurde eingegeben => Abbruch
  54. 380 FOR I=1 TO N%                   Falls nicht: Übertragung
  55. 390 PRINT CHR$( PEEK( S% + I ));    Chr$() zum Byte-weisen Übertragen
  56. 400 NEXT I
  57. 410 PRINT                           mu₧ sein; letztes Zeichen somit <CR>
  58. 420 PRINT D$;"PR#0"                 zurück zum Terminal
  59. 430 PRINT
  60. 440 INPUT "NOCH EIN FILE            Das Ganze natürlich beliebig oft
  61.     UEBERTRAGEN (J/N) ? ";A$
  62. 450 IF LEFT$(A$,1) <> "J" THEN 490  Übertragung abgeschlossen
  63. 460 ONERR GOTO 500                  Reaktivieren der Error-Routine (wurde
  64. 470 HOME                            durch File-Ende deaktiviert)
  65. 480 GOTO 40                         Und nochmal von vorne
  66. 490 END
  67. 500 E=PEEK(222)                     Inhalt der Fehlermeldung
  68. 510 POKE 216,0                      Fehler-Zeiger zurücksetzen
  69. 520 PRINT
  70. 530 IF E=6 THEN 570                 kam aus Zeile 130, File nicht existent
  71. 540 IF E=5 THEN 240                 kam aus Zeile 210, also EOF erreicht
  72. 550 PRINT "FEHLER ";E               alle anderen Fehler
  73. 560 GOTO 490                       
  74. 570 PRINT "GIBT'S NICHT!"           Falscher Dateiname eingegeben
  75. 580 ONERR GOTO 500                  Reaktivieren, s.o.
  76. 590 GOTO 40                         und nächsten Versuch starten
  77.  
  78. Compilieren, z.B. mit dem TASC-Compiler bringt eine ganze Menge, vor
  79. allem läuft das Laufwerk des Apple dann durch, statt nach jedem Sektor
  80. kurz zu stoppen, au₧er... :
  81.  
  82. **** Der Befehl A=FRE(0) bedingt, da₧ in der Variablenverwaltung auf-
  83. geräumt wird: Die Stringvariable B$ aus Zeile 210 wird unter Applesoft
  84. nämlich nicht überschrieben, sondern jedesmal neu eingerichtet. Das 
  85. führt zu einem Überlauf, wenn B$ zu oft auftaucht, wodurch die Über-
  86. tragung total durcheinandergerät.
  87. Andererseits dauert gerade dieser Befehl Fre(0) recht lange, so da₧
  88. auch bei einem compilierten Programm (s.o.) das Laufwerk nach jedem
  89. Sektor kurz anhält.
  90. Besteht also der Textfile aus nur wenigen Sektoren (z.B. 10), kann
  91. die Zeile 225 entfernt werden; das würde den Einlesevorgang auf dem
  92. Apple wesentlich beschleunigen.
  93. Man sollte sich vielleicht 2 Programme auf dem Apple erzeugen und dann
  94. compilieren, eines mit, und eines ohne Zeile 225.
  95.  
  96. Atari-seitig wird entweder unter GfA-Basic das Programm APPLE.BAS
  97. gestartet, oder gleich das bereits compilierte Programm APPLE.PRG,
  98. welches natürlich alles etwas beschleunigt.
  99.  
  100. Die "procedure" ist dann wie folgt:
  101. - Auf beiden Rechnern die Programme starten
  102. - Atari-Programm bis zur Abfrage "V24-Schnittstelle fertig zum 
  103.   Übertragen?" laufen lassen (einschlie₧lich dem "O.K."-Klick!).
  104. - Apple Programm bis einschlie₧lich der File-Abfrage durchlaufen 
  105.   lassen
  106. - Nachdem der Apple die Anzahl der Bytes angegeben hat, hält er (in einer
  107.   Endlosschleife, Zeilen 320-350) an.
  108.   An dieser Stelle wurden die zwei Bytes übertragen, die die Länge der
  109.   zu übertragenden Bytes enthalten. Diese Anzahl wird auch auf dem
  110.   Atari angezeigt, und es erscheint eine Alert-Box, in der diese Länge
  111.   bestätigt werden soll.
  112. * Falls beide Längen nicht übereinstimmen, wird durch Anklicken der
  113.   "nein"-Box das Programm auf dem Atari gestoppt. Auf dem Apple mu₧
  114.   dann noch ein "J" eingegeben werden, und auch dieses Programm wird
  115.   gestoppt.
  116. * Falls beide Längen doch übereinstimmen (dies sollte der Normalfall
  117.   sein!), zunächst auf dem Atari die "ja"-Box anklicken, dann auf dem
  118.   Apple irgendeine Taste (au₧er "J"!!) drücken, z.B. die Space-Taste.
  119. - Apple ist dann zunächst fertig. Falls kein anderer Textfile übertragen
  120.   werden soll, <CR> drücken und ausschalten.
  121. - Datenfile auf dem Atari wie gewünscht weiterbearbeiten, drucken 
  122.   und/oder speichern.
  123. - Neue Übertragung sinngemä₧.
  124.  
  125. (Die Kontrolle der Anzahl der zu übertragenden Bytes ist insofern sinn-
  126.  voll, da auf der V24-Schnittstelle (auf der Apple-Karte oder auch im
  127.  Atari-Buffer) noch alte Daten stehen können; der Atari erwartet dann
  128.  eine falsche Anzahl von Bytes und "hängt sich auf", wie man so schön
  129.  sagt.)
  130.  
  131. Viel Spa₧ damit, bei mir lief die Übertragung gut!
  132.  
  133. Rolf Henke, Blumenthalstr. 12, 2800 Bremen 1, d.25.01.1988
  134. (Das ist die Adresse, an die die vielen Geldscheine geschickt werden
  135.  sollen!!!)
  136.  
  137.